from builder import *

preset_rooms = {} # key is RM_ code

# SELF NOTE: It is generally required that all doors in a room connect to each other.
# If you make a preset room where this doesn't hold, you'd better add other preset rooms
# that ensure there's some way through the dungeon without passing that room.

preset_rooms[RM_ENTRY_1] = Template("""
#########################
############+############
############.############
##WELCOME###.############
##TO#THE####.############
##DUNGEON###..###########
#############...#########
#############~~...#######
############~~~~~...#####
###########~~~~~~~~.#####
###########~~~~~~~~.#####
##~~~~~~##~~~~~~~~~.#####
#~~####~~~~~~~~~~~~.#####
#~########~~~~~~~~~.#####
###########~~~~~~~..#####
############~~~~~..######
##############~...#######
#############...#..######
############..####..#####
############.######.#####
############.#####...####
############.#####.s.####
############.#####...####
############e############
#########################
""",lowercase_letters={'e':Special_grid(terrain='}',exit_to=(D_OUTSIDE,0)),
                       'b':Special_grid(object=O_G_PRIEST),
                       's':Special_grid(terrain='@',signpost_message='Not sure what to do? Try the Tutorial.')},
entrance=1)

preset_rooms[RM_ENTRY_2] = Template("""
#########################
############+############
############e############
####MAGE####.#WARRIOR####
############.############
####.....###.###.....####
####..a..=.....=..c..####
####.....###.###.....####
############.############
############.############
############.############
####.....###.###.....####
####..b..=.....=..d..####
####.....###.###.....####
############.############
####PRIEST##.###ROGUE####
############.############
############.############
#########.......#########
#########.kh..s.......###
#########.mw....#####.###
#########.......#####)###
############x########n###
############+############
#########################
""",lowercase_letters={'k':Special_grid(object=O_KEY_RED),
                       'g':Special_grid(object=O_KEY_GOLD),
                       'h':Special_grid(object=O_HEALING_POT),
                       'm':Special_grid(object=O_MAGIC_POT),
                       'w':Special_grid(object=O_SHORTSWORD),
                       'a':Special_grid(object=O_G_MAGE),
                       'b':Special_grid(object=O_G_PRIEST),
                       'c':Special_grid(object=O_G_WARRIOR),
                       'd':Special_grid(object=O_G_ROGUE),
                       'e':Special_grid(object=O_GOLD),
                       'x':Special_grid(terrain='@',signpost_message='Peasant, thou art poorly clothed for the dungeon! Get yourself better garb here.'),
                       'n':Special_grid(terrain='@',signpost_message='It\'s your own fault for being nosy!'),
                       's':Special_grid(terrain='@',signpost_message='Choose your path wisely. But worry not over much, for you will have plenty of chances to change your profession later.')},
)

preset_rooms[RM_ENTRY_3] = Template("""
#########################
############b############
############.e###########
############.############
##########......#########
########...~~~~..########
#######..~~~~~~~...######
######..~~~~~~~~~~..#####
#####..~~~~~~~~~~~~.#####
#####.~~~~~~~~~~~~~..####
#####.~~~~~~~~~~~~~~.####
#####.~~~~~~~~~~~~~~.####
#a....~~~~~~~~~~~~~~.fgc#
###d#.~~~~~~~~~~~~~~#####
#####..~~~~~~~~~~~~~#####
######...~~~~~~~~~#######
########..~~~~~~#########
#########....############
############.############
##########.....##########
##########.s...##########
##########.....##########
############.############
############+############
#########################
""",lowercase_letters={'a':Special_grid(terrain='}',exit_to=(D_EASY_DUNGEON,0)),
                       'b':Special_grid(terrain='}',exit_to=(D_MAIN_DUNGEON,2)),
                       'c':Special_grid(terrain='}',exit_to=(D_GOBLIN_CAVE,0)),
                       'x':Special_grid(monster=M_GOBLIN_ARCHER),
                       'd':Special_grid(terrain='@',signpost_message='A safe dungeon for beginners.'),
                       'e':Special_grid(terrain='@',signpost_message="Enough nancying round in the beginner's dungeon! Take me to the real dungeon, I wanna kill some monsters already!"),
                       'f':Special_grid(terrain='@',signpost_message="Whatever you do, don't go in here! It's swarming with goblins!"),
                       'g':Special_grid(terrain='@',signpost_message="Don't say I didn't warn you!"),
                       's':Special_grid(terrain='@',signpost_message="Now that you're equipped, it's time for you to do some adventuring. Choose a door...")},
)

preset_rooms[RM_DROW_1] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
##.....................##
#{..........!..........>#
##.....................##
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""")

preset_rooms[RM_DROW_2] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
##.....................##
#<..........d..........G#
##.....................##
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""",lowercase_letters={'d':Special_grid(monster=M_DARK_ELF)})

preset_rooms[RM_DROW_3] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
##.....................##
#G.....................}#
##.....................##
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""")

preset_rooms[RM_FIREDRAKE_1] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
##.....................##
##..*****************..##
##..*****************..##
#{.....................<#
##..*****************..##
##..*****************..##
##.....................##
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""")

preset_rooms[RM_FIREDRAKE_2] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
######..............#####
######.############.#####
######.############.#####
##.......*......*....*.##
##..*.......*.....*....##
##.....*........sooos..##
#>..........d..sogwgos.$#
##..*....*......sooos..##
##....*.....*......*...##
##..............*......##
######.############.#####
######.############.#####
######..............#####
#########################
#########################
#########################
#########################
#########################
#########################
""",lowercase_letters={'d':Special_grid(monster=M_FIREDRAKE),
                       'w':Special_grid(object=O_DRAGON_SLAYER),
                       'g':Special_grid(object=O_GEMS),
                       'o':Special_grid(object=O_GOLD),
                       's':Special_grid(object=O_SILVER)})

preset_rooms[RM_FIREDRAKE_3] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
##.....................##
#$............o........##
##.....................##
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""",lowercase_letters={'o':Special_grid(object=O_ORB_LIFE)})

preset_rooms[RM_CROSSROADS] = Template("""
#########################
############b############
############.############
############.############
###########...###########
###########...###########
###########...###########
###########...###########
###########...###########
###########...###########
###########...###########
####.................####
#a.d........!..........c#
####.................####
###########...###########
###########...###########
###########...###########
###########...###########
###########...###########
###########.s.###########
###########...###########
############.############
############.############
############{############
#########################
""",lowercase_letters={'a':Special_grid(terrain='}',exit_to=(D_OUTSIDE,0)),
                       'b':Special_grid(terrain='}',exit_to=(D_FIREDRAKE,0)),
                       'c':Special_grid(terrain='}',exit_to=(D_MAIN_DUNGEON,4)),
                       's':Special_grid(terrain='@',signpost_message="A choice lies before you. The door directly ahead of you leads to the Firedrake's lair and either eternal fame or immediate doom. If you are not ready to confront the Firedrake yet, then take the door to your right, which leads back into the dungeon. Finally, the door to your left leads outside - if you want to give up your quest and return home to your family, now is the time."),
                       'd':Special_grid(terrain='@',signpost_message="Are you sure? If you cross this threshold, your quest will be over!")},
)

preset_rooms[RM_TREASURE] = Template("""
#########################
############}############
############.############
############.############
##.....................##
##.###################.##
##.###################.##
##.###.............###.##
##.###.#####.#####.###.##
##.###.#####.#####.###.##
##.###.##.scsss.##.###.##
##.###.##.so.ox.##.###.##
##.....##ssgg.ss##.....##
##.###.##c.o.osc##.###.##
##.###.##.sxcs..##.###.##
##.###.#####.#####.###.##
##.###.#####.#####.###.##
##.###.............###.##
##.###################.##
##.###################.##
##.....................##
############.############
############.############
############{############
#########################
""",lowercase_letters={'g':Special_grid(object=O_GOLD),
                       'o':Special_grid(object=O_SILVER),
                       'c':Special_grid(object=O_SMALL_FOOD),
                       'x':Special_grid(object=O_CHEST_SMALL),
                       's':Special_grid(object=O_COPPER)})

preset_rooms[RM_TREASURE_2] = Template("""
#########################
############}############
############.############
############.############
##.....................##
##.###################.##
##.###################.##
##.###.............###.##
##.###.#####.#####.###.##
##.###.#####.#####.###.##
##.###.##.ccssc.##.###.##
##.###.##.so.ox.##.###.##
##.....##cscg.ss##.....##
##.###.##c.o.occ##.###.##
##.###.##.sxcs..##.###.##
##.###.#####.#####.###.##
##.###.#####.#####.###.##
##.###.............###.##
##.###################.##
##.###################.##
##.....................##
############.############
############.############
############{############
#########################
""",lowercase_letters={'g':Special_grid(object=O_GEMS),
                       'o':Special_grid(object=O_GOLD),
                       'c':Special_grid(object=O_COPPER),
                       'x':Special_grid(object=O_CHEST_SMALL),
                       's':Special_grid(object=O_SILVER)})

preset_rooms[RM_HEROES_1] = Template("""
#########################
############+############
########.........########
########.~~...~~.########
########.~~...~~.########
########.~~...~~.########
#######&.~~...~~.&#######
########.~~...~~.########
########.~~...~~.########
########.~~.!.~~.########
########.~~...~~.########
########.~~...~~.########
#######&.~~...~~.&#######
########.~~...~~.########
########.~~...~~.########
########.~~.!.~~.########
########.~~...~~.########
########.~~...~~.########
#######&.~~...~~.&#######
########.~~...~~.########
########.~~...~~.########
########.~~...~~.########
########.........########
############{############
#########################
""",lowercase_letters={})

preset_rooms[RM_HEROES_2] = Template("""
#########################
############}############
########.........########
##....##.........##....##
##....##...gms...##....##
##.a...\...mmm...`...c.##
##.b...\...emr...`...d.##
##....##.........##....##
##....##..0...0..##....##
########.........########
##....##.........##....##
##....##..0...0..##....##
##.h...-.........=...j.##
##.i...-.........=...k.##
##....##..0...0..##....##
##....##.........##....##
########.........########
#######&..0...0..&#######
########.........########
########.........########
#######&..0...0..&#######
########.........########
########.........########
############+############
#########################
""",lowercase_letters={'m':Special_grid(object=O_GOLD),
                       'r':Special_grid(object=O_KEY_RED),
                       's':Special_grid(object=O_KEY_SILVER),
                       'g':Special_grid(object=O_KEY_GOLD),
                       'e':Special_grid(object=O_KEY_GREEN),
                       'a':Special_grid(object=O_G_WARRIOR),
                       'b':Special_grid(object=O_AXE),
                       'c':Special_grid(object=O_G_MAGE),
                       'd':Special_grid(object=O_WAND),
                       'h':Special_grid(object=O_G_PRIEST),
                       'i':Special_grid(object=O_MACE),
                       'j':Special_grid(object=O_G_ROGUE),
                       'k':Special_grid(object=O_BOW),
                       }
)

preset_rooms[RM_CHAMPIONS_1] = Template("""
#########################
############+############
#########&##.##&#########
########.........########
########.**...~~.########
##...###.**...~~.###...##
##.a.=r.....8.....r=.d.##
##...###.**...~~.###...##
########.**...~~.########
########.**...~~.########
########.**...~~.########
##...###.**...~~.###...##
##.b.=r.....8.....r=.e.##
##...###.**...~~.###...##
########.**...~~.########
########.**...~~.########
########.**...~~.########
##...###.**...~~.###...##
##.c.=r.....8.....r=.f.##
##...###.**...~~.###...##
########.**...~~.########
########.........########
#########&##.##&#########
############{############
#########################
""",lowercase_letters={
  'a':Special_grid(monster=M_INVISIBLE_STALKER),
  'b':Special_grid(monster=M_FIRE_LIZARD),
  'c':Special_grid(monster=M_ORC_CAPTAIN),
  'd':Special_grid(monster=M_OGRE),
  'e':Special_grid(monster=M_CHAMELEON),
  'f':Special_grid(monster=M_GOBLIN_SHAMAN),
  'r':Special_grid(object=O_KEY_RED)
})

preset_rooms[RM_CHAMPIONS_2] = Template("""
#########################
############}############
############........#####
###################.#####
##########.....####.#####
##########.c.d.####.#####
##########.....####.#####
############.######.#####
########....5.......#####
########.........########
###...##.........##...###
###.a.##...sms...##.e.###
###.....5..m!m..5.....###
###.b.##...sms...##.f.###
###...##.........##...###
########.........########
#####.......5....########
#####.######.############
#####.####.....##########
#####.####.g.h.##########
#####.####.....##########
#####.###################
#####........############
############+############
#########################
""",lowercase_letters={'a':Special_grid(object=O_G_CRUSADER),
                       'c':Special_grid(object=O_G_TRICKSTER),
                       'e':Special_grid(object=O_G_UNDEAD_SLAYER),
                       'g':Special_grid(object=O_G_WARLOCK),
                       'b':Special_grid(object=O_FLAIL),
                       'd':Special_grid(object=O_TROLLISH_SHORTSWORD),
                       'f':Special_grid(object=O_ELVEN_BOW),
                       'h':Special_grid(object=O_FIRE_WAND),
                       'm':Special_grid(object=O_GOLD),
                       's':Special_grid(object=O_SILVER),
                       }
)

preset_rooms[RM_TUTORIAL_1] = Template("""
#########################
#########################
####CLICK#ON#THE#########
######SIGNPOST###########
#########################
#########################
#########################
#########################
#########################
##############.c....#####
##############.####.#####
##############.####....##
#{....a....###.#######.+#
##########.###..#########
##########.####.#########
##########.####.#########
#######....####.#########
#######.#######.#########
#######....b....#########
#########################
#########################
#########################
#########################
#########################
#########################
""",lowercase_letters={'a':Special_grid(terrain='@',signpost_message='Welcome to the tutorial! This will show you how to get started. To begin with, click on the next signpost to walk to it...'),
                       'b':Special_grid(terrain='@',signpost_message='If you want to know what something is, try right-clicking on it. Also, if you need to maximise the game window, click on the expander icon in the top right corner.'),
                       'c':Special_grid(terrain='@',signpost_message='You can see a map of your surroundings by clicking the \'Map\' button. As you travel around the dungeon, more and more of the map will become visible.')},
)

preset_rooms[RM_TUTORIAL_2] = Template("""
#########################
#########################
#########################
#########################
#########################
#################.....###
#####......######.###.###
#####.####.######.###.###
#####~####~######.###*###
#####.####.######.###.###
#####a####.####.....#d###
#####.####.####..g..#.###
#+....####.####~~~~~#..+#
##########.####.....#####
#########.b.###.....#####
#########s..###w....#####
#########...###..c..#####
#########~~~#####.#######
#########.g.#####.#######
#########...#####.#######
##########.######.#######
##########.######.#######
##########........#######
#########################
#########################
""",lowercase_letters={'s':Special_grid(object=O_SHORTSWORD),
                       'w':Special_grid(object=O_WAND),
                       'a':Special_grid(terrain='@',signpost_message='To jump over an obstacle, walk up to it and then click on the far side of it. You can only jump two spaces at a time. Sometimes you won\'t manage the jump first time, particularly if you\'re carrying a lot of gear, so keep trying until you make it over...'),
                       'b':Special_grid(terrain='@',signpost_message='It\'s about time for some bloodshed! Pick up the sword (click on it), jump over the moat and kill the goblin by standing next to it and clicking on it until the nasty little thing is completely exterminated.'),
                       'c':Special_grid(terrain='@',signpost_message='Try using the wand instead. Pick it up, yell \'Zappus Monsterus\' (go on, yell it!) and click on the goblin to zap it.'),
                       'd':Special_grid(terrain='@',signpost_message='Look at the bars on the right hand side of the screen. The red one is your Health, and if one of the goblins hit you, it may have dropped. Health can be replenished by eating food or drinking potions; but if you run out - game over! The blue bar is your Magic, which is drained by using a wand or casting spells, and comes back naturally over time. The grey bar is your \'Zap\'. It measures how fast you do things. If you maneuver quickly about the dungeon, the bar will reach the top and flash yellow. This means you\'re getting a bonus for being speedy.'),
                       'g':Special_grid(monster=M_GOBLIN)},
)

preset_rooms[RM_TUTORIAL_3] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#####...........####h.b##
#####.~~~~.~~~~.####.g.##
#####.~.......~.####...##
#####.~.~~s~~.~.#####.###
#####.~.~...~.~.#####.###
#+.a..~...r...~....##.###
#####.~.~...~.~.##.##=###
#####.~.~~~~~.~.##.##.###
#####.~.......s.##....###
#####.~~~~.~~~~.##.######
#####...........##.######
##################.######
############.~~~~~.######
############.#####.######
############.###c..######
############.############
############G############
#########################
""",lowercase_letters={'g':Special_grid(object=O_KEY_GREEN),
                       'r':Special_grid(object=O_KEY_RED),
                       'h':Special_grid(object=O_HEALING_POT),
                       'b':Special_grid(object=O_WATER_WALKING_BOOTS),
                       'a':Special_grid(terrain='@',signpost_message='Keys are important. Every time you see a locked door, you\'ll need the right key to open it. (Unless you can pick locks, or teleport, but that\'s another story...) Retrieve the red key, then walk up to the red door and click on it to use the key.'),
                       'c':Special_grid(terrain='@',signpost_message='Stuck? Go pick up the boots in the room to the top right...'),
                       's':Special_grid(monster=M_SEA_SERPENT,terrain='~')},
)

preset_rooms[RM_TUTORIAL_4] = Template("""
#########################
############G############
############.############
############........#####
###################.#####
##################.a.####
##################b..####
#####...gmr.######...####
#####.#####.#######_#####
#####=#####.#######.#####
#####.#####.#######.#####
#####.#####q#####.....###
#+.##.#####.#####.....###
##.#...####.#####.....###
##.#.s.##f...f###..s..###
##.#...##.....###..7..###
##.#s..##...d.###.....###
##.#.np##.d...###.....###
##.##.###.....###.....###
##.##.#####_#####.bwg.###
##.e..#####.#######.#####
###########...c.....#####
#########################
#########################
#########################
""",lowercase_letters={'b':Special_grid(object=O_KEY_BLUE),
                       'r':Special_grid(object=O_KEY_RED),
                       'w':Special_grid(object=O_G_WARRIOR),
                       'm':Special_grid(object=O_MACE),
                       'f':Special_grid(object=O_GOLD),
                       'g':Special_grid(object=O_HEALING_POT),
                       'p':Special_grid(object=O_HOLY_SWORD),
                       'a':Special_grid(terrain='@',signpost_message='You look like a hick in that peasant outfit. Time to get some new threads!'),
                       'c':Special_grid(terrain='@',signpost_message='Now that you\'re a warrior, you can start learning some new powers. Pick up the treasure and you will gain a level and get a new ability. If you ever want to check what abilities you have, click the \'Powers\' button.'),
                       'e':Special_grid(terrain='@',signpost_message='The game has 25 different powers you can use. All of them are activated using mouse gestures. You can become a Warrior, Mage, Rogue or Priest, and you can change class any time by finding a new outfit. As you go deeper in the dungeon, there are more character types you can become,\nand lots more new equipment and monsters.'),
                       'q':Special_grid(terrain='@',signpost_message='By the way, if you ever try to move somewhere and then change your mind halfway, click off the map to stop moving.'),
                       'n':Special_grid(monster=M_GOBLIN_ARCHER),
                       'd':Special_grid(monster=M_GOBLIN),
                       's':Special_grid(monster=M_SKELETON)},
)

preset_rooms[RM_TUTORIAL_5] = Template("""
#########################
#########################
#########################
#########################
#########################
############...........##
############.#########.##
###########...########b##
###########...########a##
###########.8.########.##
###########...########.##
###########...########.##
#}...######.!.########.+#
####.######...###########
####.######...###########
####.######.8.###########
####.######...###########
##....#####...####YOUR###
##....######.#######o####
####(#######.#####QUEST##
####..c......############
#########################
#########################
#########################
#########################
""",lowercase_letters={'o':Special_grid(object=O_ORB_LIFE),
                       'a':Special_grid(terrain='@',signpost_message='You score points by picking up gold and jewels. Collect as much treasure as possible to maximise your score. However, that\'s not your ultimate goal...'),
                       'b':Special_grid(terrain='@',signpost_message='Sages say that the fabled Orb of Life grants a thousand years of life to he (or she) who possesses it. Find the Orb to extend your life far beyond the allotted span of mortals. However, beware - the Orb is guarded by a horrible dragon called the Firedrake, who has slain all the other heroes who have set out in search of the Orb.'),
                       'c':Special_grid(terrain='@',signpost_message='Was the tutorial clear? I hope so - but if you aren\'t confused now, you will be soon...'),}
)

preset_rooms[RM_STAIRSUP_RIGHT_WITH_RANDOMDOOR_LEFT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#DXXXXXXXXXXXXXXXXXXXXX<#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSDOWN_RIGHT_WITH_RANDOMDOOR_LEFT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#DXXXXXXXXXXXXXXXXXXXXX>#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSUP_RIGHT_WITH_GOLDDOOR_LEFT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#$XXXXXXXXXXXXXXXXXXXXX<#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSDOWN_RIGHT_WITH_GOLDDOOR_LEFT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#$XXXXXXXXXXXXXXXXXXXXX>#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSUP_LEFT_WITH_RANDOMDOOR_RIGHT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#<XXXXXXXXXXXXXXXXXXXXXD#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSDOWN_LEFT_WITH_RANDOMDOOR_RIGHT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#>XXXXXXXXXXXXXXXXXXXXXD#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSUP_LEFT_WITH_GOLDDOOR_RIGHT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#<XXXXXXXXXXXXXXXXXXXXX$#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSDOWN_LEFT_WITH_GOLDDOOR_RIGHT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#>XXXXXXXXXXXXXXXXXXXXX$#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSUP_UP_WITH_RANDOMDOOR_DOWN] = Template("""
#########################
############<############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############D############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSDOWN_UP_WITH_RANDOMDOOR_DOWN] = Template("""
#########################
############>############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############D############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSUP_UP_WITH_GOLDDOOR_DOWN] = Template("""
#########################
############<############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############$############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSDOWN_UP_WITH_GOLDDOOR_DOWN] = Template("""
#########################
############>############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############$############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSUP_DOWN_WITH_RANDOMDOOR_UP] = Template("""
#########################
############D############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############<############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSDOWN_DOWN_WITH_RANDOMDOOR_UP] = Template("""
#########################
############D############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############>############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_STAIRSUP_DOWN_WITH_GOLDDOOR_UP] = Template("""
#########################
############$############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############<############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_STAIRSDOWN_DOWN_WITH_GOLDDOOR_UP] = Template("""
#########################
############$############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############>############
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3},keys_required_somewhere=['$'])

preset_rooms[RM_NORMALDOOR_LEFT_RANDOMDOOR_RIGHT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#+XXXXXXXXXXXXXXXXXXXXXD#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_NORMALDOOR_RIGHT_RANDOMDOOR_LEFT] = Template("""
#########################
#########################
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#DXXXXXXXXXXXXXXXXXXXXX+#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#########################
#########################
""",inheritable_properties={TP_CORRIDOR_PROB:1.5,TP_NON_CORRIDOR_PROB:0.3})

preset_rooms[RM_GUARANTEED_TREASURE_DOOR_RIGHT] = Template("""
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
######XXXXXXXXX##########
######XXXXXXXXX##########
######XXXXXXXXX##########
######XXXXXXXXX##########
######XXXXXXXXX........+#
######XXXXXXXXX##########
######XXXXXXXXX##########
######XXXXXXXXX##########
######XXXXXXXXX##########
#########################
#########################
#########################
#########################
#########################
#########################
#########################
#########################
""",child_only_properties={TP_IS_GOOD_ENCOUNTER:1,TP_THEME_PROBS:{E_UNDEFENDED_TREASURE:10,E_OTHER:0}})

preset_rooms[RM_NEED_GOLDKEY_TO_EXIT] = Template("""
#########################
############}############
########,,,,,############
########\\################
#######a...........######
##################.######
######.............######
######.##################
######.........##########
##############.##########
#######...........#######
#######...........#######
#{.....................+#
#######...........#######
#######...........#######
#######...........#######
#######...........#######
#######...........#######
############.############
############.############
############.############
############.############
############.############
############+############
#########################
""",lowercase_letters={'a':Special_grid(terrain='@',signpost_message="Looks like it will be easy to leave this dungeon? Well, it won't be. The key to this door is hidden on the very bottom level of the dungeon, and you will not be able to get past this door without it.")},                   
    keys_required_somewhere=[])
# NOTE above, the dungeon builder is responsible for putting a gold key somewhere, it is not handled here

preset_rooms[RM_RIVER_SW_NE_V1] = Template("""
#########################
############+#########~~#
###XXXXX###...#XXX#..~~~#
###XXXXX##.....XXX..~~~~#
###XXXXX......#XXX#~~~~##
###XXXXX##....#####~~~.##
###XXXXX###....~~~~~~..##
###########...~~~~~....##
##XXXXX###...~~~~......##
##XXXXX#....~~~~.......##
##XXXXX....~~~~........##
##XXXXX#...~~~....###..##
##XXXXX#..~~~~...#####.+#
####.###.~~~~...##XXX#.##
##XXXXX#~~~~....##XXX..##
##XXXXX#~~~~....##XXX####
##XXXXX#~~....###########
##XXXXX~~~.##############
##XXXXX~~~.#XXXXX#XXXXX##
######~~~..#XXXXX#XXXXX##
#####~~~~...XXXXX.XXXXX##
###~~~~~..##XXXXX#XXXXX##
##~~~~...###XXXXX#XXXXX##
#~~~#####################
#########################
""",inheritable_properties={TP_FIERY_PROB:0},child_only_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1})
# NOTE above, the dungeon builder is responsible for making sure that this river can be circumnavigated

preset_rooms[RM_RIVER_SW_NE_V2] = Template("""
#########################
######################~~#
##############XXX#...~~~#
##XXXXXXXXX#..XXX...~~~~#
##XXXXXXXXX..#XXX#.~~~~##
##XXXXXXXXX#.####~~~~~.##
####.###.###.##~~~~~~..##
####.###.###..~~~~~##.###
##...........~~~~~.#XXX##
####.###....~~~~~~..XXX##
###XXX##..~~~~~~~~.#XXX##
###XXX##.~~~~~~~~~.##.###
#+.XXX...~~~~~~~.......+#
###XXX##.~~~~~~~.###.####
###XXX##.~~~~~~~.##XXX###
###XXX##~~~~~~...##XXX###
##.XXX.#~~~........XXX###
###XXX#~~~##.###.##XXX###
###XXX#~~~XXXXX#.##XXX###
######~~~#XXXXX#.##XXX###
#####~~~~#XXXXX....XXX###
###~~~~~##XXXXX#.##XXX###
##~~~~.###XXXXX#.##XXX###
#~~~########+############
#########################
""",inheritable_properties={TP_FIERY_PROB:0},child_only_properties={TP_WANT_ENCOUNTER:1})
# NOTE above, the dungeon builder is responsible for making sure that this river can be circumnavigated

preset_rooms[RM_RIVER_NW_SE] = Template("""
#########################
#~~######################
#~~~.#####XXX############
#~~~~#####XXX..#XXX######
##~~~~####XXX#..XXX######
###~~~~~~~####.#XXX######
####~~~~~~~~~..##.#######
####..~~~~~~~~~....#XXX##
####..~~~..~~~~~...#XXX##
####...~~....~~~~..#XXX##
####...~~~....~~~..##.###
####...~~~~....~~~.....##
######..~~~....~~~.....+#
##XXX#..~~~.....~~.....##
##XXX...~~~.....~~.....##
##XXX#..~~~~....~~.....##
######...~~~~..~~~.##.###
##XXX#....~~~~~~~~##XXX##
##XXX......~~~~~~~##XXX##
##XXX#.#.....~~~~~~#XXX##
#####XXX#.....~~~~~~#####
#####XXX##.....##~~~~~###
#####XXX###...#####~~~~##
############+########~~~#
#########################
""",inheritable_properties={TP_FIERY_PROB:0},child_only_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1})
# NOTE above, the dungeon builder is responsible for making sure that this river can be circumnavigated

preset_rooms[RM_RIVER_SW_N] = Template("""
#########################
############~~~##########
###########.~~~..########
##########..~~~..########
#########..~~~~~..#######
####XXX#...~~~~~..#######
####XXX#..~~~~~~...######
####XXX#..~~~~~~...######
#####.##.~~~..~~....#####
###......~~~..~~......###
##......~~~...~~.......##
##......~~~...~~.......##
#+......~~....~~.......+#
##.....~~....~~........##
##....~~~....~~......####
##...~~~....~~~....######
##...~~~...~~~...########
##..~~~~.~~~~...#########
##.~~~~~~~~~....#########
##~~~~~~~~~....##########
##~~~~~~~~.....##########
##~~~~~~.#.....##########
#~~~~~.####....##########
#~~~########+############
#########################
""",inheritable_properties={TP_FIERY_PROB:0,TP_WANT_ENCOUNTER:1},child_only_properties={TP_WANT_GOOD_ENCOUNTER:1,TP_OPEN:1})

preset_rooms[RM_RIVER_S_NW_NE] = Template("""
#########################
############+#########~~#
#~~####XXX#..#########~~#
#~~~###XXX...#XXX###~~~##
##~~~##XXX#...XXX###~~~##
###~~~#####..#XXX##~~~~##
#####~~~~~...##.###~~~###
########~~~........~~####
###XXX##~~~~.....~..~####
###XXX##.~~~~..~~~~...###
###XXX...~~~~.~~~~~...###
###XXX##..~~~~~~~......##
#+.XXX##..~~~~~~..##.#.+#
###XXX##..~~~~~..###.####
###XXX...~~~~~..###XXX###
###XXX##.~~~~~..###XXX###
###XXX##.~~~~......XXX###
####.###.~~~~...###XXX###
##XXXXX#.......####XXX###
##XXXXX#.~~~~...###XXX###
##XXXXX..~~~~~.....XXX###
##XXXXX##~~~~~..###XXX###
##XXXXX###~~~~#####XXX###
###########~~~###########
#########################
""",inheritable_properties={TP_FIERY_PROB:0},child_only_properties={TP_WANT_ENCOUNTER:1,TP_OPEN:1})

preset_rooms[RM_TWO_EXITS_AND_DOOR_RIGHT] = Template("""
#########################
############}############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX+#
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############}############
#########################
""")

preset_rooms[RM_TWO_EXITS_AND_DOOR_LEFT] = Template("""
#########################
############}############
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
#+XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
##XXXXXXXXXXXXXXXXXXXXX##
############}############
#########################
""")

preset_rooms[RM_LOCKED_DOORS_W_E_S_STAIRSUP_N] = Template("""
#########################
############<############
############.############
############.############
############.############
############.############
############.############
############.############
############.############
############.############
###########...###########
##########.....##########
#G..........8..........S#
##########.....##########
###########...###########
############.############
############.############
############.############
############.############
############.############
############.############
############.############
############.############
############$############
#########################
""",keys_required_somewhere=['$','G','S'])

#RM_TEST = 1000
#RM_TEST_START = 1001
#RM_TEST_DOWN = 1002

#preset_rooms[RM_TEST] = Template("""
##########################
#############+############
###.....................##
###.....................##
###.....................##
###.....#############...##
###.....###ANTOINE###...##
###.....##WAS##HERE##...##
###.....#############...##
###.....................##
###.....................##
###.............###.....##
##+...#######...|.#.....+#
###...#XXXXX#...#.|.....##
###...#XXXXX#...|.#.....##
###...#XXXXX#...#.|.....##
###...#XXXXX#...|.#.....##
###...#XXXXX#...#.|.....##
###...###.###...###.....##
###.................a...##
###.....................##
###.....................##
###.....................##
#############+############
##########################
#""",self_only_properties={TP_NO_ENCOUNTER:1},
#lowercase_letters={'a':Special_grid(monster=M_GOBLIN)},
#child_only_properties={TP_NON_FIERY_PROB:0.2})

#preset_rooms[RM_TEST_START] = Template("""
##########################
#############{############
###.....................##
###.abcdefghi...........##
###.eeeeeeee............##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
##+.....................+#
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
#############+############
##########################
#""",self_only_properties={TP_NO_ENCOUNTER:1},
#lowercase_letters={'a':Special_grid(object=O_HOLY_SWORD),
                   #'b':Special_grid(object=O_G_WARRIOR),
                   #'c':Special_grid(object=O_BOW),
                   #'d':Special_grid(object=O_STONESKIN_POT),
                   #'e':Special_grid(object=O_HEALING_POT),
                   #'f':Special_grid(object=O_KEY_GOLD),
                   #'g':Special_grid(object=O_G_ROGUE),
                   #'h':Special_grid(object=O_G_UNDEAD_SLAYER),
                   #'i':Special_grid(object=O_GEMS)})

#preset_rooms[RM_TEST_DOWN] = Template("""
##########################
##########################
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
###.....................##
##+.....................>#
###.....................##
###.....................##
###.....................##
###.....................##
###................b....##
###.....................##
###..............b..a...##
###.....................##
###...................b.##
###.....................##
##########################
##########################
#""",self_only_properties={TP_NO_ENCOUNTER:1},
#lowercase_letters={'a':Special_grid(monster=M_GOBLIN_SHAMAN),
                   #'b':Special_grid(monster=M_GOBLIN)})



